如何判断远端主机UDP端口是否开启

您所在的位置:网站首页 cmd 查询端口号是否开启 如何判断远端主机UDP端口是否开启

如何判断远端主机UDP端口是否开启

2024-06-30 00:42| 来源: 网络整理| 查看: 265

一、服务端TCP监听端口

如果是tcp作为监听端口,很多人里面可以想到相应的方法,由于tcp三次握手协议,我们可以直接写一个客户端程序即可判断tcp端口是否监听。我们汇总几种方法: 1.tcp socket客户端编程 直接调用connect接口(unix),建链远端地址和端口,建链成功:在监听port;建链拒绝:表示未在监听 2.telnet命令 client:

[root@Node_B build]# telnet 10.228.113.185 8000 Trying 10.228.113.185... Connected to 10.228.113.185 (10.228.113.185). Escape character is '^]'. ss Hello,you are connected!

server:

[root@localhost test]# ./tcp_server ======waiting for client's request====== recv msg from client: ss

如果拒绝:

[root@Node_B build]# telnet 10.228.113.185 8001 Trying 10.228.113.185... telnet: connect to address 10.228.113.185: Connection refused telnet: Unable to connect to remote host: Connection refused

3.nc命令 client:

[root@Node_B build]# nc -vz 10.228.113.185 8000 Connection to 10.228.113.185 8000 port [tcp/irdmi] succeeded!

在这里插入图片描述 如果拒绝:

[root@Node_B build]# nc -vz 10.228.113.185 8001 nc: connect to 10.228.113.185 port 8001 (tcp) failed: Connection refused 二、服务端UDP监听端口

相对于TCP,UDP无法通过三次握手来判断端口是否启用,connect 接口链接UDP套接字和远端主机UDP绑定的地址和端口,无论远端是否绑定,connect均可以链接成功,同时 telnet也仅适用于TCP。 我们只能通过nc命令来判断。 我们做一个实验: 1)在服务端我们启用一个10.228.113.185,端口8888的udp端口 client:

[root@Node_B build]# nc -uvz 10.228.113.185 8888 Connection to 10.228.113.185 8888 port [udp/ddi-udp-1] succeeded!

server:

[root@localhost test]# ./udp_server client:X server:I have recieved 1 bytes data! client:X server:I have recieved 1 bytes data! client:X server:I have recieved 1 bytes data! client:X server:I have recieved 1 bytes data! client:X server:I have recieved 1 bytes data!

在这里插入图片描述 1.如果udp监听端口开启,在监听范围,就不会回复ICMP包 2.netcat会连续相监听端口发送五个探测包,udp报文数据区带一个字符’X’ 3.如果没有收到目标主机的回复,netcat认为远端监听的端口开启

2)我们用nc探测没有开启服务的端口 client:

[root@Node_B build]# nc -uvz 10.228.113.185 8887

在这里插入图片描述 netcat向服务端发送了两个udp探测报文,远端立即回复了ICMP的报文,端口不可达

3)nc探测一个链路不通的端口

[root@Node_B build]# ping 10.228.113.186 PING 10.228.113.186 (10.228.113.186) 56(84) bytes of data. From 10.228.113.90 icmp_seq=2 Destination Host Unreachable From 10.228.113.90 icmp_seq=3 Destination Host Unreachable From 10.228.113.90 icmp_seq=4 Destination Host Unreachable From 10.228.113.90 icmp_seq=6 Destination Host Unreachable From 10.228.113.90 icmp_seq=7 Destination Host Unreachable From 10.228.113.90 icmp_seq=8 Destination Host Unreachable ^C --- 10.228.113.186 ping statistics --- 9 packets transmitted, 0 received, +6 errors, 100% packet loss, time 8946ms pipe 3 [root@Node_B build]# nc -uvz 10.228.113.186 8888 Connection to 10.228.113.186 8888 port [udp/ddi-udp-1] succeeded!

从实验来看,对端链路不通,但是nc工具任然认为8888端口开启,实际上我们无法确认对端是否开启,这就是这个nc工具的小bug,上面我们也说到如果没有收到目标主机的回复,netcat认为远端监听的端口开启,由于链路不通,这里也分两种情况: 1.如果nc探测的地址是在同一个子网下面,但是远端地址和本机不通,通过抓包发现,实际都没有发出来任何一个探测包,由于底层失败对端是同一个子网,但是学不到mac,所以没有发出任何报文 2.如果nc探测的地址不是在同一个子网下面,通过抓包发现,可以发出五个探测报文,由于不在一个网段,直接走默认网关,所以可以发出来探测报文。 在这里插入图片描述 4)nc+ping+traceroute组合使用来判断UDP监听端口 经过上面的一系列实验,发现使用nc工具探测udp监听端口,必须确保两个设备链路是否通畅,但是ping 包均是 ICMP 报文,即使链路正常,还是不能保证百分之百保证UDP报文一定能到达对端,因为还有极少数的路由器或者一些防火墙设备可能会丢去一些端口较大的 UDP 报文。因此,此时还要借助 traceroute 判断 UDP 包是否到达了远端主机。

三、nc工具常用方法

1、远程拷贝文件 从server1拷贝文件到server2上。需要先在server2上,,用nc激活监听,

server2上运行: nc -l 1234 > text.txt server1上运行: nc 192.168.10.11 1234


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3